<?php
namespace app\admin\controller;
use think\Controller;
use think\Db;
use think\Validate;
use app\admin\model\Admin as AdminModel;
use app\admin\model\Role as RoleModel;
/**
 * 后台管理员控制器
 * @author 唐小虎 <1731050423@qq.com>
 */
class Admin extends Base {
	/**
     * 用户首页
     * @return mixed
     */
    public function index()
    {
        cookie('__forward__', $_SERVER['REQUEST_URI']);
        // 数据列表
        $data_list = AdminModel::order('sort,id desc')->paginate();

        $this->assign('meta_title','管理员列表');
        $this->assign('list',$data_list);
        return $this->fetch();
    }
    /**
     * 新增
     * @author 唐小虎 <1731050423@qq.com>
     * @return mixed
     */
    public function add()
    {
        // 保存数据
        if ($this->request->isPost()) {
            $data = $this->request->post();
            // 验证
            $result = $this->validate($data, 'Admin');
            $data['reg_time'] = time();
            // 验证失败 输出错误信息
            if(true !== $result) return $this->error($result);

            if ($user = AdminModel::create($data)) {
                // 记录行为
                action_log('user_add', 'admin', $user['id'], UID);
                return $this->success('新增成功', url('index'));
            } else {
                return $this->error('新增失败');
            }
        }
        $this->assign('role', RoleModel::getTree(null, false));
        $this->assign('meta_title','新增管理员');
        return $this->fetch();
    }

    /**
     * 编辑
     * @param null $id 用户id
     * @author 唐小虎 <1731050423@qq.com>
     * @return mixed
     */
    public function edit($id = null)
    {
        if ($id === null) return $this->error('缺少参数');
        // 保存数据
        if ($this->request->isPost()) {
            $data = $this->request->post();
            // 禁止修改超级管理员的角色和状态
            if ($data['id'] == 1 && $data['role'] != 1) {
                return $this->error('禁止修改超级管理员角色');
            }
            // 禁止修改超级管理员的状态
            if ($data['id'] == 1 && $data['status'] != 1) {
                return $this->error('禁止修改超级管理员状态');
            }
            // 验证
            $result = $this->validate($data, 'Admin.update');
            // 验证失败 输出错误信息
            if(true !== $result) return $this->error($result);
            // 如果没有填写密码，则不更新密码
            if ($data['password'] == '') {
                unset($data['password']);
            }

            if ($user = AdminModel::update($data)) {
                // 记录行为
                action_log('user_edit', 'admin', $user['id'], UID);
                return $this->success('编辑成功', cookie('__forward__'));
            } else {
                return $this->error('编辑失败');
            }
        }
        // 获取数据
        $info = AdminModel::where('id', $id)->field('password', true)->find();
        $this->assign('role', RoleModel::getTree(null, false));
        $this->assign('meta_title','编辑管理员');
        $this->assign('info',$info);
        return $this->fetch();
    }

    /**
     * 删除用户
     * @param array $record 行为日志
     * @author 唐小虎 <1731050423@qq.com>
     * @return mixed
     */
    public function delete($record = [])
    {
        return $this->setStatus('delete');
    }
}
